perm filename CKE.OLD[CH2,ALS]2 blob sn#518379 filedate 1980-06-26 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00009 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE	CKE    	12/15/70
C00030 00003	CRNER CORNER
C00044 00004
C00050 00005
C00066 00006	SYN Fourth set introduced June 11 1977.
C00069 00007		SUBTTL	FINAL SCORE EVALUATION
C00078 00008
C00080 00009	
C00081 ENDMK
C⊗;
	TITLE	CKE    	12/15/70
	LALL
	SUBTTL	SPECIAL EVALUATION MACROS -


	;REGISTER ASSIGNMENTS
;NAME     USAGE
Z=0	;SCRATCH, AND EVA SCORES
X1=1	;SCRATCH
U1=2	;SCRATCH
X2=3	;SCRATCH
U2=4	;SCRATCH
X3=5	;ACTP
U3=6	;ACTK
X4=7	;EMPTY
U4=10	;CFLAG
X5=11	;COLOR
U5=12	;PASP
Q=13	;PASK AND EV VALUES
A=14	;A
P=15	;P
K=16	;K
PDP=17	;PUSH-DOWN POINTER
	INTERN	CFTAB2
	INTERN	INIT1,CFLAG,EV,PHASE,PHASEV,TLIST,EEB,EEB2,PCCNT
	INTERN	KSTART,RFU,LFU,LBU,RBU
	EXTERN	OCT2,PRINT,TERPRI,NUMOUT,DDT
	EXTERN	LFLAG,EVTIM0,EVTIMT

;*****************************************************************
;     INITT WILL BE CALLED DURING INITIALIZATION OF THE PROGRAM.
;IT FILLS TABLES CFTAB2, AND CFTAB3, WHICH ARE NEEDED DURING
;EVALUATION.  IT USES, WITHOUT RESTORING, REGISTERS Z,X1,U1,X2,
;AND C4.
;
;BITSON COUNTS 1 BITS IN THE SUBSCRIPT
;     E.G.  BITSON+12 = 2
;
;CFTAB2 REVERSES THE BITS OF THE SUBSCRIPT
;     E.G.  CFTAB2+23 = 620000000000
;
;CFTAB3 MULTIPLIES THE FIRST 3 BITS OF A NUMBER BY 2*13 AND DIVIDES
;BY THE LAST 6 BITS.
;*****************************************************************


INIT1:		MOVEI	U2,41	;START WITH 1 AND 1 FOR CFTAB3
	CFZ:	MOVE	X1,U2	;TOP OF LOOP
		LSHC	X1,-5
		JUMPE	U1,CFOO	;CHECK FOR ZERO DENOMINATOR
		LSH	U1,-37	;GET DENOMINATOR RIGHT JUSTIFIED
		ASH	X1,7
		IDIVM	X1,U1
		ASH	X1,6
		MOVEM	U1,CFTAB3(U2)	;STORE QUOITIENT INTO TABLE
	CFOO:	AOJ	U2,	;BUMP FOR NEXT ITERATION
		CAIE	U2,1000	;CHECK FOR TERMINATION
		JRST	CFZ	;LOOP BACK
	CF1:	MOVEI	U2,377	;BEGINNING OF CFTAB2 INITIALIZATION
		MOVEI	X2,10
		MOVE	X1,U2
		MOVEI	U1,
		LSHC	X1,-1	;TOP OF LOOP TO REVERSE BITS
		ROT	U1,2
		SOJG	X2,.-2
		LSH	U1,33
		MOVEM	U1,CFTAB2(U2)	;STORE REVERSED BITS INTO TABLE
		SOJGE	U2,CF1+1
		POPJ	PDP,

;*****************************************************************
;     PCCNT CALCULATES PIECE-COUNT AS FOLLOWS:  A1+A2-P1-P2/A1+A2+P1+P2
;WHERE
; A1 = 3 * ACTIVE KINGS NOT ON FRONT OR BACK EDGES
; A2 = 2 * ACTIVE NON-KINGS OR KINGS ON FRONT OR BACK EDGES
; P1 = 3 * PASSIVE KINGS NOT ON FRONT OR BACK EDGES
; P2 = 2 * PASSIVE NON-KINGS OR KINGS ON FRONT OR BACK EDGES
;
;REGISTERS Z,X1,U1,U2,U3,U4,U5,Q,A,P, AND K ARE USED.
;
;UPON EXIT, U3 HAS THE PIECE-COUNT VALUE.
;ON ENTRY IT ASSUMES THAT A,P, AND K ARE PROPERLY FILLED
;*****************************************************************

;*****************************************************************
;     CAQ SIMULATES THE 7090 CAQ INSTRUCTION.
;IT COUNTS THE 1 BITS IN REGISTER U1+1 (U1 IS AN ARGUMENT), AND
;LEAVES THE RESULT IN REGISTER PDP (AN ARGUMENT).
;THE GUARD BITS ARE ALSO SET TO ZERO IN THIS MACRO (IF THEY ARE
;TO BE USED FOR NECESSARY INFORMATION LATER, THEY MUST BE SAVED)
;*****************************************************************


GUARDS:	377377377377

DEFINE	CAQ	(U1,SUM)	<;THIS MACRO COUNTS BITS IN U1+1
	AND	U1+1,GUARDS
	MOVE	SUM,[POINT 9,U1+1]
	MOVEM	SUM,CAQBP
	ILDB	U1,CAQBP
	MOVE	SUM,BITSON(U1)
	ILDB	U1,CAQBP
	ADD	SUM,BITSON(U1)
	ILDB	U1,CAQBP
	ADD	SUM,BITSON(U1)
	ILDB	U1,CAQBP
	ADD	SUM,BITSON(U1)>

CAQBP:	Z

EXTERN	BITSON, PLY



;***************************************************************
;     CFSPEC CALCULATES UMB, THRTC, AND DENYC, WHICH ARE USED IN
;THE EVALUATION TERMS CPRTDL, THRET, AND DENFNT RESPECTIVELY.
;UPON ENTRY IT EXPECTS:
;     Z = EMPTY SQUARES
;     U1 = FORWARD ACTIVE PIECES
;     U2 = BACKWARD ACTIVE PIECES
;     U3 = RIGHT FORWARD POTENTIAL MOVES
;     U4 = LEFT FORWARD POTENTIAL MOVES
;     X5 = COLOR OF BOARD
;     U5 = LEFT BACKWARD POTENTIAL MOVES
;     Q = RIGHT BACKWARD POTENTIAL MOVES
;     A = ACTIVE PIECES (ALL)
;     P = PASSIVE PIECES (ALL)
;     K = KINGS
; THESE CONDITIONS ARE NORMALLY MET AT EXIT FROM LEGAL.
;ALL REGISTERS ARE USED, AND Z,X5,A,P, AND K ARE SAVED.
;***************************************************************

PCCNT:	MOVE	U1,P
	CAQ	X1,U5
	LSH	U5,1	;2P
	MOVN	U3,U5
	MOVE	U4,U5
	SKIPN	U1,K
	JRST	PCCNT2
	AND	U1,P
	AND	U1,OFFEDG
	JUMPE	U1,PCCNT1
	CAQ	X1,U4
	ADDB	U5,U4	;2P+PK
PCCNT1:	MOVNS	U5	;CHANCE SIGN
	MOVE	U1,A
	AND	U1,K
	AND	U1,OFFEDG
	MOVE	U3,U5
	JUMPE	U1,PCCNT2
	CAQ	X1,U3
	ADD	U3,U5	;AK-(2P+PK)
PCCNT2:	MOVE	U1,A
	CAQ	X1,U5
	LSH	U5,1
	ADD	U5,U3	;2A+AK-2P-PK
	LSH	U4,1	;4P+2PK
	ADD	U4,U5	;2A+AK+2P+PK
	LSH	U4,-1	;DIVIDE BY 2
	LSH	U5,5	;MAKE ROOM
	MOVM	U2,U5
	CAIGE	U2,1000
	JRST	.+3
	SUBI	U2,41
	JRST	.-3
	IOR	U2,U4	
	MOVE	U3,CFTAB3(U2)
	SKIPGE	U5
	MOVNS	U3
	ASH	U3,10
	POPJ	PDP,


	SUBTTL	MACROS FOR TERM EVALUATIONS


DEFINE	EMAC	(M1,M2,M3,M4)	<
	MOVE	X3,Z
	LSH	X3,M1	;-4,-5,4,5
	XOR	X3,M2	;U1,U1,U2,U2
	AND	X3,M2
	LSH	X3,M3	;-10,-12,10,12
	MOVEM	X3,M4	;RFB,LFB,LBB,RBB>

DEFINE	EVMAC	(E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,M4,M5,M6)	<
		SKIPN	X4,E1	;RF,LF,LB,RB
		JRST	.+33
		LSH	X4,E6	;-4,-5,4,5
		MOVEM	X4,E7
		MOVE	X3,E2	;BP,BP,FP,FP
		LSH	X3,E3	;4,5,-4,-5
		MOVE	PDP,X3
		AND	PDP,M4	;RFB,LFB,LBB,RBB
		MOVEM	PDP,M5	;RFR,LFR,LBR,RBR
		MOVE	PDP,E2
		LSH	PDP,E4	;12,10,-12,-10
		AND	PDP,Z
		LSH	PDP,E5	;-5,-4,5,4
		IOR	X3,PDP
		AND	PDP,M6	;LFB,RFB,RBB,LBB
		IORM	PDP,M5
		AND	X4,X3
		MOVEM	X4,E8	;RFD,LFD,LBD,RBD
		ANDM	X4,M5
		XOR	X4,E7
		MOVEM	X4,E9	;RFU,LFU,LBU,RBU
		MOVE	X3,Z
		LSH	X3,E10	;5,4,-5,-4
		AND	X3,P
		LSH	X3,E10
		AND	X3,E9
		MOVEM	X3,E11	;RFT,LFT,LBT,RBT
		JRST	.+6
		SETZM	E7	;RFM,LFM,LBM,RBM
		SETZM	M5	;RFR,LFR,LBR,RBR
		SETZM	E8	;RFD,LFD,LBD,RBD
		SETZM	E9	;RFU,LFU,LBU,RBU
		SETZM	E11	;RFT,LFT,LBT,RBT>

RFD:	Z		;DENY DATA
LFD:	Z
LBD:	Z
RBD:	Z
RFM:	Z		;MOBILITY DATA
LFM:	Z
LBM:	Z
RBM:	Z
RFU:	Z		;UNDENIED MOBILITY DATA
LFU:	Z
LBU:	Z
RBU:	Z
RFT:	Z		;THREAT DATA
LFT:	Z
LBT:	Z
RBT:	Z
RFB:	Z		;RF BACK UP
LFB:	Z
LBB:	Z
RBB:	Z
RFR:	Z		;RF RECAPTURE
LFR:	Z
LBR:	Z
RBR:	Z
FP:	Z		;FORWARD PASSIVE
BP:	Z		;BACKWARD PASSIVE
FA:	Z		;FORWARD ACTIVE
BA:	Z		;BACKWARD ACTIVE
AK:	Z		;ACTIVE KINGS
PK:	Z		;PASSIVE KINGS
AN:	Z		;ACTIVE NON-KINGS
PN:	Z		;PASSIVE NON-KINGS




	DEFINE	DIAG	(USE)	<;DIAGONAL TERM ONLY
	IFN	USE,<MOVEI	U1,[ASCIZ /DIAG    /]>
	IFE	USE,<JRST	DIAGZ>>
	DIAGZ:	MOVE	U1,P	;DIAGONAL ROUTINE
		AND	U1,DDIM
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE DIAK	(USE)	<;DIAGONAL KING TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /DIAK    /]>
	IFE	USE,<JRST	DIAKZ>>
	DIAKZ:	MOVE	U1,PK
		AND	U1,DDIM
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,


DEFINE	CROOK	(USE)	<;CROOK TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /CROOK   /]>
	IFE	USE,<JRST	CROOKZ>>
	CROOKZ:	JUMPE	X5,CRKB
		MOVE	U1,Z
		LSH	U1,-4
		AND	U1,P
		LSH	U1,-4
		MOVE	U2,Z
		LSH	U2,-5
		AND	U2,P
		LSH	U2,-5
		IOR	U2,U1
		AND	U2,P
		JUMPE	U2,CRKZ+3
		MOVE	U1,Z
		LSH	U1,1
		AND	U1,P
		LSH	U1,4
		MOVE	X4,P
		LSH	X4,1
		AND	X4,Z
		LSH	X4,4
		IOR	X4,U1
		AND	X4,U2
		JUMPE	X4,CRKZ+3
		JRST	CRKZ
	CRKB:	MOVE	U1,Z
		LSH	U1,4
		AND	U1,P
		LSH	U1,4
		MOVE	U2,Z
		LSH	U2,5
		AND	U2,P
		LSH	U2,5
		IOR	U2,U1
		AND	U2,P
		JUMPE	U2,CRKZ+3
		MOVE	U1,Z
		LSH	U1,-1
		AND	U1,P
		LSH	U1,-4
		MOVE	X4,P
		LSH	X4,-1
		AND	X4,Z
		LSH	X4,-4
		IOR	X4,U1
		AND	X4,U2
		JUMPE	X4,CRKZ+3
	CRKZ:	MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	RECAPT	(USE)	<;RECAPTURE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /RECAPT  /]>
	IFE	USE,<JRST	RECAPZ>>
	RECAPZ:	MOVE	U1,RFR
		IOR	U1,LFR
		IOR	U1,LBR
		IOR	U1,RBR
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	
		DEFINE	ELINE	(USE)	<;ELINE TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /ELINE   /]>
	IFE	USE,<JRST	ELINEZ>>
	ELINEZ:	MOVE	U1,PN
		JUMPE	X5,.+3
		AND	U1,EMB
		JRST	.+2
		AND	U1,EMW
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
EMB:	142104210000
EMW:	000021042106

		DEFINE	DORIO	(USE)	<;DORIO PLUS ANGLE TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /DORIO   /]>
	IFE	USE,<JRST	DORANZ>>
	DORANZ:	MOVE	U1,P	;DORIO ROUTINE
		AND	U1,DOR
		SETCM	U2,P	;ANGLE ROUTINE
		AND	U2,ORMK
		IOR	U2,U1
		JUMPE	U2,.+16
		CAQ	X2,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
ORMK:	021020010210
DOR:	246100002145

		DEFINE	BRIDGE	(USE)	<;BRIDGE TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /BRIDGE  /]>
	IFE	USE,<JRST	BRIDGZ>>
	BRIDGZ:	JUMPE	X5,BDGW
		MOVE	U1,PN		;PASSIVE NON-KINGS
		AND	U1,BDG1
		XOR	U1,BDG1
		JUMPE	U1,BDGX
		MOVE	U1,PN
		AND	U1,BDG2
		XOR	U1,BDG2
		JUMPN	U1,BDGZ+3
		MOVE	U1,PN
		AND	U1,BDG5
		JUMPE	BDGZ+3
		JRST	BDGZ
		JRST	BDGZ+3
	BDGW:	MOVE	U1,PN
		AND	U1,BDG3
		XOR	U1,BDG3
		JUMPN	U1,.+3
	BDGX:	MOVEI	X4,2
		JRST	BDGZ+1
		MOVE	U1,PN
		AND	U1,BDG4
		XOR	U1,BDG4
		JUMPE	U1,BDGZ+3
		MOVE	U1,PN
		AND	U1,BDG6
		JUMPE	BDGZ+3
	BDGZ:	MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
BDG1:	240000000000
BDG2:	110000000000
BDG3:	000000000005
BDG4:	000000000022
BDG5:	060000000000
BDG6:	000000000014
	
		DEFINE	GUARD	(USE)	<;GUARD TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /GUARD   /]>
	IFE	USE,<JRST	GUARDZ>>

	GUARDZ:	MOVE	X1,PN
	MOVEI	X4,0
	TDNN	X1,[340000000007]	;1,2,3 OR 30,31,32
	POPJ	PDP,		;MUST BE 4 OR 29 ONLY OR EMPTY
	MOVEI	X4,1
	TDNN	X1,[140000000006]	;2,3 OR 30,31
	POPJ	PDP,		;MUST BE 1 OR 32 ONLY
	TDNN	X1,[300000000003]	;1,2 OR 31,32
	POPJ	PDP,		;MUST BE 3 OR 30 ONLY
	TDNN	X1,[240000000005]	;1,3 OR30,32
	POPJ	PDP,		;MUST BE 2 OR 31 ONLY
	SETCM	U1,X1
	MOVEI	X4,4
	JUMPE	X5,GUARDW
	TDNN	U1,[340000000000]	;1,2,3
	POPJ	PDP,		;FULL GUARD
	MOVEI	X4,3
	TDNN	U1,[240000000000]	;1 AND 3
	POPJ	PDP,		;BRIDGE POSITION
	MOVEI	X4,2
	POPJ	PDP,		;1,2 OR 2,3
GUARDW:	TDNN	U1,[000000000007]	;30,31,32
	POPJ	PDP,		;FULL GUARD
	MOVEI	X4,3
	TDNN	U1,[000000000005]	;30 AND 32
	POPJ	PDP,		;BRIDGE POSITION
	MOVEI	X4,2
	POPJ	PDP,		;30,30 OR 31,32

DEFINE	GARD2	(USE)	<;GARD2 TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /GARD2   /]>
	IFE	USE,<JRST	GARD2Z>>

	GARD2Z:	MOVE	X1,PN
	MOVEI	X4,0
	TDNN	X1,[340000000007]	;1,2,3 OR 30,31,32
	POPJ	PDP,		;MUST BE 4 OR 29 ONLY OR EMPTY
	MOVEI	X4,1
	TDNN	X1,[304000000043]	
	POPJ	PDP,		;3 BUT NOT 1 2 OR 6 EQUIVALENT
	TDNN	X1,[143000000306]
	POPJ	PDP,		;1 BUT NOT 2 3 7 0R 8 0R EQUIV.
	TDNN	X1,[261000000215]
	POPJ	PDP,		;2 BUT NOT 1 3 4 OR 8 OR EQUIV.
	MOVEI	X4,2
	POPJ	PDP,

	DEFINE	CKMOVE	(USE)	<;MOVE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /CKMOVE  /]>
	IFE	USE,<JRST	CKMOVZ>>
	CKMOVZ:	MOVE	U1,Z
		AND	U1,MOVMSK
		CAQ	X1,X4
		ANDI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
MOVMSK:	360360360360

	DEFINE	SHOVE	(USE)	<;SHOVE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /SHOVE   /]>
	IFE	USE,<JRST	SHOVEZ>>
	SHOVEZ:	MOVE	U1,FP
		LSH	U1,-11
		MOVE	U2,BP
		LSH	U2,11
		IOR	U1,U2
		SKIPN	U2,PK
		JRST	.+6
		AND	U2,[006146146140]
		LSH	U2,-1
		IOR	U1,U2
		LSH	U2,2
		IOR	U1,U2
		AND	U1,A
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	NODE	(USE)	<;NODE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /NODE    /]>
	IFE	USE,<JRST	NODEZ>>
	NODEZ:	MOVE	X4,Z
		LSH	X4,1
		AND	X4,Z
		JUMPN	X5,.+3
		LSH	X4,-5
		JRST	.+2
		LSH	X4,4
		AND	X4,PN
		JUMPE	X4,.+4
		MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,


PNTMSK:	143143143143

LFTFIL:	020020020020
RTFIL:	010010010010
ROW2:	200200200200
ROW7:	001001001001
FSTROW:	360000000000
LSTROW:	000000000017


		DEFINE	KCENT	(USE)	<;KING CENTER TERM (S)
		IFN	USE,<MOVEI	U1,[ASCIZ /KCENT   /]>
		IFE	USE,<JRST	KCENTZ>>
	KCENTZ:	MOVE	X4,PK	;GET PASK
		AND	X4,KMASK	;CENTRAL KINGS ONLY
		JUMPE	X4,.+4
		MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
KMASK:	000146146000

	DEFINE	TRIM	(USE)	<;SIDE TO SIDE BALANCE
	IFN	USE,<MOVEI	U1,[ASCIZ /TRIM    /]>
	IFE	USE,<JRST	TRIMZ>>
	TRIMZ:	MOVE	U1,P
		AND	U1,RH
		CAQ	X1,X4
		MOVE	U1,P
		AND	U1,LH
		CAQ	X1,X3
		SUB	X4,X3
		MOVMS	X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
LH:	063063063063
RH:	314314314314

	DEFINE	DDQUAD	(USE)	<;DOUBLE DIAG QUADRANTS
	IFN	USE,<MOVEI	U1,[ASCIZ /DDQUAD  /]>
	IFE	USE,<JRST	DDQUAZ>>
	DDQUAZ:	MOVE	U1,P
		AND	U1,DIAQAD
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
DIAQAD:	313314063063

	DEFINE	FORAFT	(USE)	<;FRONT TO BACK BALANCE
	IFN	USE,<MOVEI	U1,[ASCIZ /FORAFT  /]>
	IFE	USE,<JRST	FORAFZ>>
	FORAFZ:	MOVE	U1,P
		AND	U1,FH
		CAQ	X1,X4
		MOVE	U1,P
		AND	U1,BH
		CAQ	X1,X3
		SUB	X4,X3
		MOVMS	X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
FH:	000000377372
BH:	167377000000

	DEFINE	FRONT	(USE)	<;FRONT TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /FRONT   /]>
	IFE	USE,<JRST	FRONTZ>>
	FRONTZ:	MOVE	U1,PN
		JUMPE	X5,.+3
		AND	U1,DMSK
		JRST	.+2
		AND	U1,CMSK
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	MOBIL	(USE)	<;MOBILITY TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /MOBIL   /]>
	IFE	USE,<JRST	MOBILZ>>
	MOBILZ:	MOVE	U1,RFM
		IOR	U1,LFM
		IOR	U1,RBM
		IOR	U1,LBM
		CAQ	X1,X4
		MOVNS	X4
		ADDI	X4,17
		CAIGE	X4,0
		SETZ	X4,
		POPJ	PDP,

DEFINE	MOBIL2	(USE)	<;MOBILITY 2 TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /MOBIL2  /]>
	IFE	USE,<JRST	MOBLZ>>

MOBLZ:	MOVE	U1,RFM
	CAQ	X1,X4
	MOVE	U1,LFM
	CAQ	X1,X3
	ADD	X4,X3
	MOVE	U1,LBM
	CAQ	X1,X3
	ADD	X4,X3
	MOVE	U1,RBM
	CAQ	X1,X3
	ADD	X4,X3
	CAILE	X4,17
	MOVEI	X4,17
	POPJ	PDP,

	DEFINE	UNDENY	(USE)	<;UNDENIED MOBILITY TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /UNDENY  /]>
	IFE	USE,<JRST	UNDENZ>>
	UNDENZ:	MOVE	U1,RFU
		IOR	U1,LFU
		IOR	U1,LBU
		IOR	U1,RBU
		JUMPE	U1,.+16		;TO JUMP CAQ+2
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	DENY	(USE)	<;DENY TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /DENY    /]>
	IFE	USE,<JRST	DENYZ>>
	DENYZ:	MOVE	U1,RFD
		IOR	U1,LFD
		IOR	U1,LBD
		IOR	U1,RBD
		JUMPE	U1,.+16		;TO JUMP CAQ+2
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

		DEFINE	THREAT	(USE)	<;THREAT TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /THREAT  /]>
	IFE	USE,<JRST	THRETZ>>
	THRETZ:	MOVE	U1,RFT
		IOR	U1,LFT
		IOR	U1,LBT
		IOR	U1,RBT
		JUMPE	U1,.+16		;TO JUMP CAQ+2
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	PANTS	(USE)	<;PANTS TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PANTS   /]>
	IFE	USE,<JRST	PANTSZ>>
	PANTSZ:	MOVE	X4,AN
		AND	X4,PNTMSK
		LSH	X4,1
		AND	X4,AN
		JUMPE	X5,.+3
		LSH	X4,-5
		JRST	.+2
		LSH	X4,4
		AND	X4,PK
		JUMPE	X4,.+4
		MOVEI	X4,1
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

DEFINE	ADVAN	(USE)<;PIECE ADVANCEMENT
IFN	USE,<MOVEI	U1,[ASCIZ /ADVAN   /]>
IFE	USE,<JRST	ADAVNZ>>
ADAVNZ:	MOVE	U1,AN
	IOR	U1,PN
	JUMPE	X5,.+3
	AND	U1,[000000377000]
	JRST	.+2
	AND	U1,[000377000000]
	CAQ	X1,X4
	POPJ	PDP,

DEFINE	MIDDLE	(USE)<;MIDDLE CONTROL
IFN	USE,<MOVEI	U1,[ASCIZ /MIDDLE  /]>
IFE	USE,<JRST	MIDDLZ>>
	MIDDLZ:MOVE	U1,P
	AND	U1,MIDMSK
	CAQ	X1,X4
		POPJ	PDP,

MIDMSK:	000146146000

DEFINE	DYKE	(USE)<;DYKE TERM
IFN	USE,<MOVEI		U1,[ASCIZ /DYKE    /]>
IFE	USE,<JRST	DYKEZ>>
DYKEZ:	MOVE	U1,PN
	LSH	U1,4
	AND	U1,PN
	LSH	U1,4
	AND	U1,PN
	MOVE	U2,PN
	LSH	U2,5
	AND	U2,PN
	LSH	U2,5
	AND	U2,PN
	JUMPE	X5,.+4
	LSH	U1,4
	LSH	U2,5
	JRST	.+3
	LSH	U1,-14
	LSH	U2,-17
	IOR	U1,U2
	SETCM	U2,Z
	AND	U1,U2
	JUMPE	U1,.+16
	CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

DEFINE	FOUR	(USE)	<;FOUR IN A ROW
IFN	USE,<MOVEI	U1,[ASCIZ /FOUR    /]>
IFE	USE,<JRST	FOURZ>>
FOURZ:	MOVE	U1,PN
	LSH	U1,4
	AND	U1,PN
	LSH	U1,4
	AND	U1,PN
	LSH	U1,4
	MOVE	U2,PN
	LSH	U2,-5
	AND	U2,PN
	LSH	U2,-5
	AND	U2,PN
	LSH	U2,-5
	IOR	U1,U2
	AND	U1,PN
	JUMPE	U1,.+16
	CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

DEFINE	CRAMP	(USE)	<;CRAMP TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /CRAMP   /]>
	IFE	USE,<JRST	CRAMPZ>>
CRAMPZ:	MOVEI	X4,2
	MOVE	X1,PN
	SETCM	U1,X1
	MOVE	X2,AN
	SETCM	U2,X2
	SETCM	X3,Z
	JUMPE	X5,CRAMPW
					;SINGLE CORNER
	TDNN	U1,[000312000000]	;9,10,13,15
	TDNE	U2,[000000214000]	;17,21,22
	JRST	.+3
	TDNN	X3,[000004100000]	;14,18 
	ADDI	X4,1
	TDNN	U1,[000114000000]	;10,13,14 BLACK OCCUPIED
	TDNE	U2,[000000214200]	;17,21,22,25 WHITE OCCUPIED
	SUBI	X4,1
	TDNN	U1,[000011020000]	;12,16,20 BLACK OCCUPIES
	TDNE	U2,[000000043040]	;19,23,24,27 WHITE
	SUBI	X4,1
	POPJ	PDP,
;WHITE PASSIVE				SINGLE CORNER
CRAMPW:	TDNN	U1,[000000123000]	;18,20,23,24
	TDNE	U2,[000061000000]	;11,12,16
	JRST	.+3
	TDNN	X3,[000002040000]	;15,19
	ADDI	X4,1
	TDNN	U1,[000000062000]	;19,20,23 WHITE PCCUPIED
	TDNE	U2,[001061000000]	;8,11,12,16 BLACK OCCUPIED
	SUBI	X4,1
	TDNN	U1,[000010210000]	;13,17,21 WHITE OCCUPIES
	TDNE	U2,[004304000000]	;6,9,10,14 BLACK
	SUBI	X4,1
	POPJ	PDP,

DEFINE	PAIRS	(USE)	<;DIAGONAL PAIRS
IFN	USE,<MOVEI	U1,[ASCIZ /PAIRS   /]>
IFE	USE,<JRST	PAIRZ>>
PAIRZ:	MOVE	U1,PN
	LSH	U1,4
	AND	U1,PN
	CAQ	X1,U2
	MOVE	U1,PN
	LSH	U1,5
	AND	U1,PN
	CAQ	X1,X4
	ADD	X4,U2
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

DEFINE	WOOPS	(USE)<;SHOT WEAKNESS
	IFN	USE,<MOVEI	U1,[ASCIZ /WOOPS   /]>
	IFE	USE,<JRST	WOOPZ>>

WOOPZ:	MOVEI	X4,2
	SETCM	U1,P
	AND	U1,[017377377377]
	LSH	U1,11
	ANDCM	U1,P		;EMPTY FORE AND AFT
	MOVE	X1,P
	AND	X1,[003143143140]
	LSH	X1,1
	AND	X1,P		;PASSIVE SIDE BY SIDE
	LSH	X1,4
	AND	X1,U1
	SKIPN	X1
	SUBI	X4,1
	SETCM	U1,P
	AND	U1,[000167167000]
	LSH	U1,1
	ANDCM	U1,P		;EMPTY SIDE BY SIDE
	MOVE	X1,P
	AND	X1,[000007347340]
	LSH	X1,11
	AND	X1,P		;PASSIVE FORE AND AFT
	LSH	U1,4
	AND	X1,U1
	SKIPN	X1
	SUBI	X4,1
	POPJ	PDP,
;CRNER CORNER
DEFINE	CRNER	(USE)<;DOUBLE CORNER DISTANCE
	IFN	USE,<MOVEI	U1,[ASCIZ /CRNER   /]>
	IFE	USE,<JRST	CRNEZ>>

CRNEZ:	MOVE	X4,P
	AND	X4,CRNM3
	JUMPE	X4,CRNZ2
	MOVE	U1,X4
	CAQ	X1,X4
	MOVE	U1,P
	AND	U1,CRNM2
	JUMPE	U1,CRNZ1
	CAQ	X1,X3
	ADD	X4,X3
	MOVE	U1,P
	AND	U1,CRNM1
	JUMPE	U1,CRNZ1
	CAQ	X1,X3
	ADD	X4,X3
CRNZ1:	CAILE	X4,17
	MOVEI	X4,17
CRNZ2:	POPJ	PDP,

CRNM1:	214200001061
CRNM2:	314314063063
CRNM3:	316317363163

DEFINE	CORNER	(USE)<;DOUBLE CORNER CONTROL
	IFN	USE,<MOVEI	U1,[ASCIZ /CORNER  /]>
	IFE	USE,<JRST	CORNEZ>>

CORNEZ:	MOVEI	X4,1		;CREDIT IF ALL CAN BE HELD
	MOVEI	U1,↑D31
	JUMPE	X5,CORNZ4	;BLACK ACTIVE
	TDNE	A,CORNA(U1)	;LOCATE WHITE ACTIVE PIECE
	JRST	.+3
CORNZ1:	SOJGE	U1,.-2		;TRY AGAIN
CORNZZ:	POPJ	PDP,		;EXIT
	TDNN	P,CORNPB(U1)	;CAN IT BE HELD
	SOJA	X4,CORNZZ	;NO
	TDNE	K,CORNA(U1)	;IS ACTIVE PIECE A KING
	JRST	CORNZ2		;YES
	MOVE	U2,PK
	TDNE	U2,CORNPB(U1)	;IS IT HELD BY A KING
	JRST	CORNZ1		;YES
	TDNE	P,CORNWB(U1)	;ON ACCEPTABLE SQUARE
	JRST	CORNZ1		;GO TO NEXT PIECE
	SOJA	X4,CORNZZ	;NO 

CORNZ2:	MOVE	U2,PK
  	TDNE	U2,CORNPB(U1)	;IS IT HELD BY A KING
	JRST	CORNZ3		;YES
	TDNE	P,CORNKB(U1)	;ON ACCEPTABLE SQUARE
	JRST	CORNZ1		;GO TO NEXT PIECE
	SOJA	X4,CORNZZ	;NO

CORNZ3:	TDNE	P,CORNKK(U1)	;ON ACCEPTABLE SQUARE
	JRST	CORNZ1		;YES, GO TO NEXT PIECE
	SOJA	X4,CORNZZ	;NO

CORNZ4:	TDNE	A,CORNA(U1)	;LOCATE BLACK ACTIVE PIECE
	JRST	.+3
CORNZ5:	SOJGE	U1,.-2		;TRY AGAIN
	POPJ	PDP,		;EXIT
	TDNN	P,CORNPW(U1)	;CAN IT BE HELD
	SOJA	X4,CORNZZ	;NO
	TDNE	K,CORNA(U1)	;IS ACTIVE A KING
	JRST	CORNZ6		;YES
	MOVE	U2,PK
	TDNE	U2,CORNPW(U1)	;IS IT HELD BY A KING
	JRST	CORNZ5		;YES, GO TO NEXT PIECE
	TDNE	P,CORNBW(U1)	;ON ACCEPTABLE SQUARE
	JRST	CORNZ5		;GO TO NEXT PIECE
	SOJA	X4,CORNZZ	;NO

CORNZ6:	MOVE	U2,PK
	TDNE	U2,CORNPW(U1)	;IS IT HELD BY A KING
	JRST	CORNZ7		;YES
	TDNE	P,CORNKW(U1)	;ON ACCEPTABLE SQUARE
	JRST	CORNZ5		;GO TO NEXT PIECE
	SOJA	X4,CORNZZ	;N0

CORNZ7:	TDNE	P,CORNKK(U1)	;ON ACCEPTABLE SQUARE
	JRST	CORNZ5		;GO TO NEXT PIECE
	SOJA	X4,CORNZZ	;NO

;ACTIVE PIECE BEING HELD
CORNA:	200000000000		;1
	100000000000		;2
	040000000000		;3
	020000000000		;4
	010000000000		;5
	004000000000		;6
	002000000000		;7
	001000000000		;8
	000200000000		;9
	000100000000		;10
	000040000000		;11
	000020000000		;12
	000010000000		;13
	000004000000		;14
	000002000000		;15
	000001000000		;16
	000000200000		;17
	000000100000		;18
	000000040000		;19
	000000020000		;20
	000000010000		;21
	000000004000		;22
	000000002000		;23
	000000001000		;24
	000000000200		;25
	000000000100		;26
	000000000040		;27
	000000000020		;28
	000000000010		;29
	000000000004		;30
	000000000002		;31
	000000000001		;32


;PASSIVE K HOLDING ACTIVE K
CORNKK:	0
	200300000000	;1,9,10
	304344340000	;1,2,6,9,10,11,14,15,17,18,19
	346367367360	;1,2,3,6,7,9,10,11,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28
	0
	0
	004006000000	;6,14,15
	006107147000	;6,7,10,14,15,16,18,19,22,23,24
	0
	0
	000100140000	;10,18,19
	000142163160	;10,11,15,18,19,20,23,24,26,27,28,
	014004000000	;5,6,14
	0
	0
	000002003000	;15,23,24
	000300100000	;9,10,18
	0
	0
	000000040060	;19,27,28
	016316106000	;5,6,7,9,10,13,14,15,18,22,23
	000006002000	;14,15,23
	0
	0
	000346342140	;9,10,11,14,15,17,18,19,23,26,27
	000000140040	;18,19,27
	0
	0
	017357357147	;5,6,7,8,9,11,10,13,14,15,16,17,18,19,21,22,23,24,26,27,30,31,32
	000007147043	;14,15,18,16,19,22,23,24,27,31,32
	000000003001	;23,24,32
	0


;POSSIBLE HOLDING SQUARES FOR BLACK
CORNPB:	0
	200300000000	;1,9,10
	304344340000	;1,2,6,9,10,11,14,15,17,18,19
	346367367360	;1,2,3,6,7,9,10,11,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28
	200000000000	;1
	200000000000	;1
	314116000000	;1,2,5,6,10,13,14,15
	316317357000	;1,2,5,6,7,9,10,13,14,15,16,17,18,19,21,22,23,24
	200000000000	;1
	300200000000	;1,2,9
	354316340000	;1,2,3,5,6,9,10,13,14,15,17,18,19
	376357377360	;1,2,3,4,5,6,7,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
	214004000000	;1,5,6,14
	214010000000	;1,5,6,13
	316214000000	;1,2,5,6,7,9,13,14
	357316357000	;1,2,3,5,6,7,8,9,10,13,14,15,17,18,19,21,22,23,24
	314300100000	;1,2,5,6,9,10,18
	314310200000	;1,2,5,6,9,10,13,17
	356354300000	;1,2,3,5,6,7,9,10,11,13,14,17,18
	377376357360	;1,2,3,4,5,6,7,8,9,10,11,12,13,15,14,17,18,19,21,22,23,24,25,26,27,28
	316316106000	;1,2,3,5,6,7,9,10,13,14,15,18,22,23
	316316012000	;1,2,5,6,7,9,10,13,14,15,21,23
	316316214000	;1,2,5,6,7,9,10,13,14,15,17,21,22
	357357316000	;1,2,3,5,6,7,8,9,10,11,13,14,15,16,17,18,21,22,23
	356356352140	;1,2,3,5,6,7,9,10,11,13,14,15,17,18,19,21,23,26,27
	356356350240	;1,2,3,5,6,7,9,10,11,13,14,15,17,18,19,21,25,27
	356356354300	;1,2,3,5,6,7,9,10,11,13,14,15,17,18,19,21,22,25,26
	377377376340	;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27
	357357357147	;1,2,3,5,6,7,8,9,10,11,13,14,15,16,17,18,19,21,22,23,24,26,27,30,31,32
	357357357053	;1,2,3,5,6,7,8,9,10,11,13,14,15,16,17,18,19,21,22,23,24,27,29,31,32
	357357357216	;1,2,3,5,6,7,8,9,10,11,13,14,15,16,17,18,19,21,22,23,24,25,29,30,31
	357357357316	;1,2,3,5,6,7,8,9,10,11,13,4,15,16,17,18,19,21,22,23,24,25,26,29,30,31

;POSSIBLE HOLDING SQUARES FOR WHITE
CORNPW:	163367367367	;2,3,4,7,8,9,10,11,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,30,31,32
	261267267367	;1,3,4,8,9,11,12,14,15,16,17,19,20,22,23,24,25,26,27,28,30,31,32
	324367367367	;1,2,4,6,9,10,11,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,30,31,32
	346367367367	;1,2,3,6,7,9,10,11,12,14,15,16,17,18,19,20,22,23,24,25,26,27,28,30,31,32
	007177377377	;6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32
	003067167167	;7,8,11,12,14,15,16,18,19,20,22,23,24,26,27,28,30,31,32
	000027167167	;12,14,15,16,18,19,20,22,23,24,26,27,28,30,31,32
	002007167167	;12,14,15,16,18,19,20,22,23,24,26,27,28,30,31,32
	163367367367	;10,11,12,15,16,17,18,19,20,25,26,27,28,30,31,32
	000061163163	;11,12,16,18,19,20,23,24,26,27,28,31,32
	000160163163	;10,12,18,19,20,23,24,26,27,28,31,32
	000140163163	;10,12,18,19,20,23,24,26,27,28,31,32
	017367177377	;5,6,7,8,9,10,11,12,15,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32
	000003027167	;15,16,20,22,23,24,26,27,27,30,31,32
	000001023063	;16,20,23,24,27,28,31,32
	000002003063	;15,23,24,27,28,31,32
	000363143367	;9,10,11,12,15,16,18,19,23,24,25,26,27,28,30,31,32
	000000060163	;19,20,26,27,28,31,32
	000000020061	;20,27,28,32
	000000040061	;19.27,28,32
	017377367177	;5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,22,23,24,26,27,28,29,30,31,32
	000007163067	;14,15,16,18,19,20,23,24,27,28,30,31,32
	000000001003	;24,31,32
	000000000001	;32
	000367367167	;9,10,11,12,14,15,16,17,18,19,20,22,23,24,26,27,28,30,31,32
	000000163061	;18,19,20,23,24,27,28,32
	000000000001	;32
	000000000001	;32
	017357357147	;5,6,7,8,9,11,10,13,14,15,16,17,18,19,21,22,23,24,26,27,30,31,32
	000007147043	;14,15,18,16,19,22,23,24,27,31,32
	000000003001	;23,24,32
	0

;HOLDING WHITE PIECE BY A BLACK PIECE
CORNWB:	0
	0
	0
	0
	0
	0
	0
	0
	200000000000	;1
	100000000000	;2
	040000000000	;3
	060000000000	;3,4
	214000000000	;1,5,6
	004000000000	;6
	002000000000	;7
	040000000000	;3
	304000000000	;1,2,6
	100100000000	;2,10
	000040000000	;11
	000060000000	;11,12
	300014000000	;1,2,13,14
	300004000000	;1,2,14
	002002000000	;7,15
	012040000000	;7,8,11
	000300000000	;9,10
	000100100000	;10,18
	142000040000	;2,3,7,19
	163000060000	;2,3,4,7,8,19,20
	016000014000	;5,6,7,21,22
	006100004000	;6,7,10,22
	000002002000	;15,23
	0

;HOLDING A BLACK PIECE BY A WHITE PIECE
CORNBW:	0
	000000300006	;17,18,3,31
	000100100000	;10,18
	000040000140	;11,26,27
	000060000140	;11,12,26,27
	000014000316	;13,14,25,26,29,30,31
	000004000106	;14,26,30,31
	000002003000	;15,23,24
	000000003000	;23,24
	000000000300	;25,26
	000000100100	;18,26
	000000040002	;19,31
	000000060003	;19,20,31,32
	000000014000	;21,22
	000000004000	;22
	000000002002	;23,31
	000000000003	;31,32
	000000000004	;30
	000000000100	;26
	000000000040	;27
	000000000040	;27
	000000000014	;29,30
	000000000004	;30
	000000000002	;31
	0
	0
	0
	0
	0
	0
	0
	0

;HOLDING A WHITE KING BY A BLACK PIECE
CORNKB:	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	000000100000	;18
	0
	0
	000000014000	;21,22
	000000004000	;22
	000000002000	;23
	0

;HOLDING A BLACK KING BY A WHITE PIECE
CORNKW:	0
	000100000000	;10
	000040000000	;11
	000060000000	;11,12
	0
	0
	000002000000	;15
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0


DEFINE 	NEAR	(USE)<;NEARNESS TO BOTH CORNERS
	IFN	USE,<MOVEI	U1,[ASCIZ /NEAR    /]>
	IFE	USE,<JRST	NEARZ>>

NEARZ:	SETZ	X4,
	MOVE	U2,P
	IOR	U2,A
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMB(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A		
	SKIPE	X1		;IS PASSIVE NEARER
	POPJ	PDP,		;NO
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMW(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A
	SKIPN	X1		;IS PASSIVE NEARER TO THIS ONE
	ADDI	X4,1		;YES
	POPJ	PDP,


NEARMB:	377377377377
	357357357340
	356356356000
	316316300000
	314314000000
	214200000000
	210000000000
NEARMW:	377377377377
	007367367367
	000167167167
	000003163163
	000000063063
	000000001061
	000000000021

DEFINE	MOMENT	(USE)<;DOUBLE DIAG MOMENT
	IFN	USE,<MOVEI	U1,[ASCIZ /MOMENT  /]>
	IFE	USE,<JRST	MOMENZ>>

MOMENZ:	MOVE	U1,P
	AND	U1,MOMEZ2
	JUMPE	U1,MOMZZZ
	CAQ	X1,X4
	MOVE	U1,P
	AND	U1,MOMEZ1
	JUMPE	U1,MOMEZZ
	CAQ	X1,X3
	ADD	X4,X3
MOMEZZ:	CAILE	X4,17
	MOVEI	X4,17
	POPJ	PDP,
MOMZZZ:	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

MOMEZ1:	214306143061
MOMEZ2:	316357367163

DEFINE	PRESS	(USE)<;PRESSURE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PRESS   /]>
	IFE	USE,<JRST	PRESSZ>>

PRESSZ:	MOVE	U1,PK
	JUMPE	U1,PRESZZ
	LSH	U1,11
	MOVE	U2,PK
	LSH	U2,-11
	IOR	U1,U2
	MOVE	U2,PK
	LSH	U2,1
	AND	U2,PRESSM
	IOR	U1,U2
	MOVE	U2,PK
	AND	U2,PRESSM
	LSH	U2,-1
	IOR	U1,U2
	AND	U1,A
	JUMPE	U1,PRESZZ
	CAQ	X1,X4
	POPJ	PDP,
PRESZZ:	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

PRESSM:	167167167167

		DEFINE	ALINE	(USE)	<;ALINE TERM (S)
	IFN	USE,<MOVEI	U1,[ASCIZ /ALINE   /]>
	IFE	USE,<JRST	ALINEZ>>
	ALINEZ:	MOVE	U1,PN
		JUMPE	X5,.+3
		AND	U1,AMB
		JRST	.+2
		AND	U1,AMW
		JUMPE	U1,.+16
		CAQ	X1,X4
		POPJ	PDP,
		JRST	.+1
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,
AMB:	246102040020
AMW:	010204102145

DEFINE 	NEAR2	(USE)<;NEARNESS TO BOTH DOUBLE CORNERS
	IFN	USE,<MOVEI	U1,[ASCIZ /NEAR2   /]>
	IFE	USE,<JRST	NERZ>>

NERZ:	SETZM	NEARS#
	MOVE	U2,P
	IOR	U2,A
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMB(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A		
	SKIPN	X1		;IS PASSIVE NEARER ONE D.C.
	AOS	NEARS		;YES
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMW(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A
	SKIPN	X1		;IS PASSIVE NEARER TO THIS ONE
	AOS	NEARS		;YES
	MOVE	U1,A
	CAQ	X1,U2
	MOVE	U1,P
	CAQ	X1,X4
	CAMN	U2,X4
	JRST	NERZ3		;PIECES EQUAL
	CAMG	U2,X4
	JRST	NERZ4		;P>A SO SHOULD CONTROL BOTH
NERZ2:	SETZ	X4,
	SKIPE	NEARS
	ADDI	X4,1		;CREDIT P IF CAN RUN
	POPJ	PDP,

NERZ3:	MOVE	U1,P
	IOR	U1,A
	AND	U1,[360360360360]
	CAQ	X1,U2
	TRNE	U2,1		;WHO HAS MOVE
	JRST	NERZ2		;A SO P SHOULD RUN
NERZ4:	SETZ	X4,
	SOSLE	NEARS
	ADDI	X4,1		;CREDIT P IF CONTROL BOTH
	POPJ	PDP,

DEFINE	EDGE	(USE)<;EDGE PIECE COUNT
	IFN	USE,<MOVEI	U1,[ASCIZ /EDGE    /]>
	IFE	USE,<JRST	EDGEZ>>

EDGEZ:	MOVE	U1,PN
	AND	U1,EDGMSK
	JUMPE	U1,.+15
	CAQ	X1,X4
	POPJ	PDP,
	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

EDGMSK:	350030030027

DEFINE	CENT	(USE)<;CENTER CONTROL
	IFN	USE,<MOVEI	U1,[ASCIZ /CENT    /]>
	IFE	USE,<JRST	CENTZ>>

CENTZ:	MOVE	U1,P
	AND	U1,KMASK
	CAQ	X1,X4
	POPJ	PDP,

DEFINE CROOK2	(USE)<;SIMPLE CROOK
	IFN	USE,<MOVEI	U1,[ASCIZ /CROOK2  /]>
	IFE	USE,<JRST	CROK2Z>>

CROK2Z:	MOVE	U1,P
	LSH	U1,11
	AND	U1,P
	MOVE	X1,P
	LSH	X1,1
	IOR	X1,P
	LSH	X1,4
	AND	U1,X1
	CAQ	X1,X4
	POPJ	PDP,

DEFINE 	NEAR3	(USE)<;NEARNESS TO BOTH DOUBLE CORNERS
	IFN	USE,<MOVEI	U1,[ASCIZ /NEAR3   /]>
	IFE	USE,<JRST	NER3Z>>

NER3Z:	SETZB	X4,NEARS
	MOVE	U2,P
	IOR	U2,A
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMB(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A		
	SKIPN	X1		;IS PASSIVE NEARER ONE D.C.
	AOS	NEARS		;YES
	MOVEI	U1,6
	MOVE	X1,U2
	AND	X1,NEARMW(U1)
	SKIPN	X1
	SOJA	U1,.-3
	AND	X1,A
	SKIPN	X1		;IS PASSIVE NEARER TO THIS ONE
	AOS	NEARS		;YES
	MOVE	U1,A
	CAQ	X1,U2
	MOVE	U1,P
	CAQ	X1,X3
	CAMN	U2,X3
	JRST	NER3Z3		;PIECES EQUAL
	CAMG	U2,X3
	JRST	NER3Z4		;P>A SO SHOULD CONTROL BOTH
NER3Z2:	SKIPE	NEARS
	ADDI	X4,1		;CREDIT P IF CAN RUN
	POPJ	PDP,

NER3Z3:	MOVE	U1,P
	IOR	U1,A
	AND	U1,[360360360360]
	CAQ	X1,U2
	TRNE	U2,1		;WHO HAS MOVE
	JRST	NER3Z2		;A SO P SHOULD RUN
NER3Z4:	ADDI	X4,1		;CREDIT FOR MOVE OR AHEAD
	SOSLE	NEARS
	ADDI	X4,1		;CREDIT P IF CONTROL BOTH
	POPJ	PDP,

DEFINE	FILE	(USE)<;FILE PIECE COUNT
	IFN	USE,<MOVEI	U1,[ASCIZ /FILE    /]>
	IFE	USE,<JRST	FILEZ>>

FILEZ:	MOVE	U1,P
	AND	U1,FILMSK
	JUMPE	U1,.+15
	CAQ	X1,X4
	POPJ	PDP,
	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

FILMSK:	044044044044

DEFINE	PINP	(USE)	<;PINP TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PINP   /]>
	IFE	USE,<JRST	PINPZ>>
PINPZ:	MOVEI	X4,5
	MOVE	X1,PN
	SETCM	U1,X1
	MOVE	X2,AN
	SETCM	U2,X2
	SETCM	X3,Z
	JUMPE	X5,PINPW
					;SINGLE CORNER
	TDNN	U1,[000312000000]	;9,10,13,15
	TDNE	U2,[000000214000]	;17,21,22
	JRST	.+3
	TDNN	X3,[000004100000]	;14,18 
	ADDI	X4,1
	TDNN	U1,[000114000000]	;10,13,14 BLACK OCCUPIED
	TDNE	U2,[000000214200]	;17,21,22,25 WHITE OCCUPIED
	SUBI	X4,1
	TDNN	U1,[000011020000]	;12,16,20 BLACK OCCUPIES
	TDNE	U2,[000000043040]	;19,23,24,27 WHITE
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 BACK ROW PINP
	JRST	.+3
	TDNN	U2,[000000000012]	;29,31
	TDNE	X3,[000000000304]	;25,26,30 EMPTY
	SUBI	X4,1
	TDNE	U1,[041000000000]	;3,8  3 BY 2 LEFT
	JRST	.+3
	TDNN	U2,[000021020000]	;12,16,20
	TDNE	X3,[020042000000]	;4,11,15 EMPTY
	SUBI	X4,1
	TDNE	U1,[004200000000]	;6,9 3BY2 RIGHT
	JRST	.+3
	TDNN	U2,[000010210000]	;13,17,21
	TDNE	X3,[210004100000]	;1,5,14,18
	SUBI	X4,1
	POPJ	PDP,
;WHITE PASSIVE				SINGLE CORNER
PINPW:	TDNN	U1,[000000123000]	;18,20,23,24
	TDNE	U2,[000061000000]	;11,12,16
	JRST	.+3
	TDNN	X3,[000002040000]	;15,19
	ADDI	X4,1
	TDNN	U1,[000000062000]	;19,20,23 WHITE PCCUPIED
	TDNE	U2,[001061000000]	;8,11,12,16 BLACK OCCUPIED
	SUBI	X4,1
	TDNN	U1,[000010210000]	;13,17,21 WHITE OCCUPIES
	TDNE	U2,[004304000000]	;6,9,10,14 BLACK
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11 BACK ROW
	JRST	.+3
	TDNN	U2,[120000000000]	;2,4
	TDNE	X3,[043000000000]	;3,7,8
	SUBI	X4,1
	TDNE	U1,[000000001040]	;24,27 3BY2 LEFT
	JRST	.+3
	TDNN	U2,[000021020000]	;12,16,20
	TDNE	X3,[000002040021]	;15,19,28,32
	SUBI	X4,1
	TDNE	U1,[000000000204]	;25,30 3BY2 RIGHT
	JRST	.+3
	TDNN	U2,[000010210000]	;13,17,21
	TDNE	X3,[000000104010]	;18,22,29
	SUBI	X4,1
	POPJ	PDP,

	DEFINE	SHOVED	(USE)	<;SHOVED TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /SHOVED  /]>
	IFE	USE,<JRST	SHVEDZ>>
	SHVEDZ:	MOVE	U1,FP
		LSH	U1,-11
		MOVE	U2,BP
		LSH	U2,11
		IOR	U1,U2
	MOVE	U2,FP
	AND	U2,[167167167167]
	LSH	U2,-10
	IOR	U1,U2
	MOVE	U2,FP
	AND	U2,[356356356356]
	LSH	U2,-12
	IOR	U1,U2
	MOVE	U2,BP
	AND	U2,[167167167167]
	LSH	U2,10
	IOR	U1,U2
	MOVE	U2,BP
	AND	U2,[356356356356]
	LSH	U2,12
	IOR	U1,U2
		SKIPN	U2,PK
		JRST	.+6
		AND	U2,[00146146000]
		LSH	U2,-1
		IOR	U1,U2
		LSH	U2,2
		IOR	U1,U2
		AND	U1,A
		JUMPE	U1,.+15
		CAQ	X1,X4
		POPJ	PDP,
		AOS	(PDP)
		AOS	(PDP)
		POPJ	PDP,

	DEFINE	SHOVER	(USE)	<; PIECES DOING SHOVING
	IFN	USE,<MOVEI	U1,[ASCIZ /SHOVER  /]>
	IFE	USE,<JRST	SHVERZ>>
SHVERZ:	MOVE	U1,A		;NOW COUNT PASSIVE PIECES
	LSH	U1,11
	MOVE	U2,A
	AND	U2,[167167167167]
	LSH	U2,10
	MOVE	U3,A
	AND	U3,[356356356356]
	LSH	U3,12
	IOR	U2,U3
	XOR	U1,U2
	AND	U1,FP
	MOVE	U2,A
	LSH	U2,-11
	MOVE	U3,A
	AND	U3,[167167167167]
	LSH	U3,-10
	MOVE	Z,A
	AND	Z,[356356356356]
	LSH	Z,-12
	IOR	U3,Z
	XOR	U2,U3
	AND	U2,BP
	IOR	U1,U2
	MOVE	U2,A
	LSH	U2,1
	MOVE	X4,A
	LSH	X4,-1
	IOR	U2,X4
	AND	U2,PK
	AND	U2,[000146146000]
	IOR	U1,U2
	JUMPE	U1,.+15
	CAQ	X1,X4
	POPJ	PDP,
	AOS	(PDP)
	AOS	(PDP)
	POPJ	PDP,

	DEFINE	SHOVES	(USE)	<;SHOVES TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /SHOVES  /]>
	IFE	USE,<JRST	SHVESZ>>
SHVESZ:	PUSHJ	PDP,SHVERZ
	MOVEM	X4,X4SHV#
	JRST	.+2
	SETZM	X4SHV
	PUSHJ	PDP,SHVEDZ
	ADD	X4,X4SHV
	POPJ	PDP,
	MOVE	X4,X4SHV
	POPJ	PDP,

DEFINE	PINK	(USE)	<;PINK TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PINK    /]>
	IFE	USE,<JRST	PINKZ>>
PINKZ:	SKIPN	U1,PK
	POPJ	PDP,
	SETCM	U2,AN
	MOVEI	X4,6
	JUMPE	X5,PINKW
	TDNE	U1,[000040000000]	;11  LEFT EDGE
	TDNE	U2,[000020020000]	;12,20
	SUBI	X4,1
	TDNE	U1,[000000040000]	;19	LEFT EDGE
	TDNE	U2,[000000020020]	;20,28
	SUBI	X4,1
	TDNE	U1,[000004000000]	;14 RIGHT EDGE
	TDNE	U2,[000010010000]	;13,21
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 RIGHT EDGE
	TDNE	U2,[000000010010]	;21,29
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22
	TDNE	U2,[000000010004]	;21,30
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11
	TDNE	U2,[000000020000]	;20
	JRST	.+3
	MOVE	U2,AK
	TDNN	U2,[020000000000]	;4
	SUBI	X4,1
	POPJ	PDP,
PINKW:	TDNE	U1,[000040000000]	;11 LEFT EDGE
	TDNE	U2,[020020000000]	;4,12
	SUBI	X4,1
	TDNE	U1,[000000040000]	;19 LEFT EDGE
	TDNE	U2,[000020020000]	;12,20
	SUBI	X4,1
	TDNE	U1,[000004000000]	;14 RIGHT EDGE
	TDNE	U2,[010010000000]	;5,13
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 RIGHT EDGE
	TDNE	U2,[000010010000]	;13,21
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11
	TDNE	U2,[040020000000]	;3,12
	SUBI	X4,1
	TDNE	U1,[000000004000] 	;22
	TDNE	U2,[000010000000]	;13
	JRST	.+3
	MOVE	U2,AK
	TDNN	U2,[000000000010]	;29
	SUBI	X4,1
	POPJ	PDP,

DEFINE	PIN	(USE)	<;PIN TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /PIN     /]>
	IFE	USE,<JRST	PINZ>>
PINZ:	MOVEI	X4,3
	MOVE	X1,PN
	SETCM	U1,X1
	MOVE	X2,AN
	SETCM	U2,X2
	SETCM	X3,Z
	JUMPE	X5,PINW
					;SINGLE CORNER
	TDNN	U1,[000312000000]	;9,10,13,15
	TDNE	U2,[000000214000]	;17,21,22
	JRST	.+3
	TDNN	X3,[000004100000]	;14,18 
	ADDI	X4,1
	TDNE	U1,[000000004000]	;22 BACK ROW PIN
	JRST	.+3
	TDNN	U2,[000000000012]	;29,31
	TDNE	X3,[000000000304]	;25,26,30 EMPTY
	SUBI	X4,1
	TDNE	U1,[041000000000]	;3,8  3 BY 2 LEFT
	JRST	.+3
	TDNN	U2,[000021020000]	;12,16,20
	TDNE	X3,[020042000000]	;4,11,15 EMPTY
	SUBI	X4,1
	TDNE	U1,[004200000000]	;6,9 3BY2 RIGHT
	JRST	.+3
	TDNN	U2,[000010210000]	;13,17,21
	TDNE	X3,[210004100000]	;1,5,14,18
	SUBI	X4,1
	SKIPN	U1,PK	;KING PINS
	POPJ	PDP,
	ADDI	X4,6
	TDNE	U1,[000040000000]	;11  LEFT EDGE
	TDNE	U2,[000020020000]	;12,20
	SUBI	X4,1
	TDNE	U1,[000000040000]	;19	LEFT EDGE
	TDNE	U2,[000000020020]	;20,28
	SUBI	X4,1
	TDNE	U1,[000004000000]	;14 RIGHT EDGE
	TDNE	U2,[000010010000]	;13,21
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 RIGHT EDGE
	TDNE	U2,[000000010010]	;21,29
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22
	TDNE	U2,[000000010004]	;21,30
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11
	TDNE	U2,[000000020000]	;20
	JRST	.+3
	MOVE	U2,AK
	TDNN	U2,[020000000000]	;4
	SUBI	X4,1
	POPJ	PDP,
;WHITE PASSIVE				SINGLE CORNER
PINW:	TDNN	U1,[000000123000]	;18,20,23,24
	TDNE	U2,[000061000000]	;11,12,16
	JRST	.+3
	TDNN	X3,[000002040000]	;15,19
	ADDI	X4,1
	TDNE	U1,[000040000000]	;11 BACK ROW
	JRST	.+3
	TDNN	U2,[120000000000]	;2,4
	TDNE	X3,[043000000000]	;3,7,8
	SUBI	X4,1
	TDNE	U1,[000000001040]	;24,27 3BY2 LEFT
	JRST	.+3
	TDNN	U2,[000021020000]	;12,16,20
	TDNE	X3,[000002040021]	;15,19,28,32
	SUBI	X4,1
	TDNE	U1,[000000000204]	;25,30 3BY2 RIGHT
	JRST	.+3
	TDNN	U2,[000010210000]	;13,17,21
	TDNE	X3,[000000104010]	;18,22,29
	SUBI	X4,1
	SKIPN	U1,PK	;KING PINS
	POPJ	PDP,
	ADDI	X4,6
	TDNE	U1,[000040000000]	;11 LEFT EDGE
	TDNE	U2,[020020000000]	;4,12
	SUBI	X4,1
	TDNE	U1,[000000040000]	;19 LEFT EDGE
	TDNE	U2,[000020020000]	;12,20
	SUBI	X4,1
	TDNE	U1,[000004000000]	;14 RIGHT EDGE
	TDNE	U2,[010010000000]	;5,13
	SUBI	X4,1
	TDNE	U1,[000000004000]	;22 RIGHT EDGE
	TDNE	U2,[000010010000]	;13,21
	SUBI	X4,1
	TDNE	U1,[000040000000]	;11
	TDNE	U2,[040020000000]	;3,12
	SUBI	X4,1
	TDNE	U1,[000000004000] 	;22
	TDNE	U2,[000010000000]	;13
	JRST	.+3
	MOVE	U2,AK
	TDNN	U2,[000000000010]	;29
	SUBI	X4,1
	POPJ	PDP,

DEFINE	QUICK	(USE)<;QUICK KING ATTEMPT
	IFN	USE,<MOVEI	U1,[ASCIZ /QUICK   /]>
	IFE	USE,<JRST	QUICKZ>>
QUICKZ:	SETZ	X4,
	MOVE	U1,PN
	JUMPE	X5,QUICKW
	AND	U1,[000017377377]
	JUMPE	U1,QUICKP
	ADDI	X4,1
	AND	U1,[000000377377]
	JUMPE	U1,QUICKP
	ADDI	X4,2
	AND	U1,[000000017377]
	JUMPE	U1,QUICKP
	ADDI	X4,3
	AND	U1,[000000000377]
	JUMPE	U1,QUICKP
	ADDI	X4,4
QUICKP:	POPJ	PDP,
QUICKW:	AND	U1,[377377360000]
	JUMPE	U1,QUICKP
	ADDI	X4,1
	AND	U1,[377377000000]
	JUMPE	U1,QUICKP
	ADDI	X4,2
	AND	U1,[377360000000]
	JUMPE	U1,QUICKP
	ADDI	X4,3
	AND	U1,[377000000000]
	JUMPE	U1,QUICKP
	ADDI	X4,4
	POPJ	PDP,

DEFINE	KEYSQ	(USE)<;KEY SQUARES 
	IFN	USE,<MOVEI	U1,[ASCIZ /KEYSQ   /]>
	IFE	USE,<JRST	KEYSQZ>>
KEYSQZ:	SETZ	X4,
	MOVE	U1,PN
	AND	U1,[000014060000]	;13,14,19,20
	JUMPE	U1,.+14
	CAQ	X1,X4
	POPJ	PDP,

	DEFINE	NONUSE	(USE)	<;NONUSE TERM
	IFN	USE,<MOVEI	U1,[ASCIZ /NONUSE  /]>
	IFE	USE,<JRST	NONUSZ>>
NONUSZ:	MOVE	U1,A
	MOVE	U2,A
	MOVE	X4,A
	LSH	U1,11
	LSH	U2,-11
	IOR	X4,U1
	IORB	X4,U2
	MOVE	U1,U2
	AND	U1,[267267267267]	;EXCLUDE RIGHT 2 COLUMNS
	AND	U2,[356356356356]	;EXCLUDE LEFT 2 COLUMNS
	LSH	U1,1
	LSH	U2,-1
	IOR	X4,U1
	IORB	X4,U2
	MOVE	U1,U2
	LSH	U1,5
	LSH	U2,-5
	IOR	X4,U1
	IOR	X4,U2
	SETCA	X4
	AND	X4,PK
	SKIPE	X4
	MOVEI	X4,1
	POPJ	PDP,

DEFINE	FILES	(USE)<;FILES PIECE COUNT
	IFN	USE,<MOVEI	U1,[ASCIZ /FILES   /]>
	IFE	USE,<JRST	FILESZ>>

FILESZ:	MOVE	U1,P
	AND	U1,FILESM
	CAQ	X1,X4
	POPJ	PDP,

FILESM:	254074074065

;SYN Fourth set introduced June 11 1977.
	SYN	PRESS,T1
	SYN	NEAR3,T2
	SYN	GUARD,T3

	SYN	PAIRS,T4
	SYN	FRONT,T5
	SYN	DENY,T6

	SYN	THREAT,T7
	SYN	PINK,T8
	SYN	RECAPT,T9

	SYN	CORNER,T10
	SYN	KCENT,T11
	SYN	UNDENY,T12

	SYN	DYKE,T13
	SYN	NONUSE,T14
	SYN	MOMENT,T15

	SYN	DIAK,T16
	SYN	QUICK,T17
	SYN	MOBIL2,T18


	SYN	PRESS,TT1
	SYN	THREAT,TT2
	SYN	GUARD,TT3

	SYN	FORAFT,TT4
	SYN	ADVAN,TT5
	SYN	DENY,TT6

	SYN	FRONT,TT7
	SYN	SHOVES,TT8
	SYN	DDQUAD,TT9

	SYN	NONUSE,TT10
	SYN	KEYSQ,TT11
	SYN	RECAPT,TT12

	SYN	PINK,TT13
	SYN	QUICK,TT14
	SYN	PAIRS,TT15

	SYN	DORIO,TT16
	SYN	NEAR3,TT17
	SYN	MOBIL2,TT18


	SYN	PRESS,TTT1
	SYN	THREAT,TTT2
	SYN	GUARD,TTT3

	SYN	PAIRS,TTT4
	SYN	DORIO,TTT5
	SYN	DENY,TTT6

	SYN	CROOK,TTT7
	SYN	ALINE,TTT8
	SYN	RECAPT,TTT9

	SYN	CRAMP,TTT10
	SYN	NEAR3,TTT11
	SYN	ADVAN,TTT12

	SYN	FRONT,TTT13
	SYN	MOMENT,TTT14
	SYN	QUICK,TTT15

	SYN	FORAFT,TTT16
	SYN	EDGE,TTT17
	SYN	MOBIL2,TTT18


	SYN	CROOK,TTTT1
	SYN	PRESS,TTTT2
	SYN	GUARD,TTTT3

	SYN	DDQUAD,TTTT4
	SYN	FORAFT,TTTT5
	SYN	RECAPT,TTTT6

	SYN	NEAR3,TTTT7
	SYN	SHOVES,TTTT8
	SYN	PAIRS,TTTT9

	SYN	ALINE,TTTT10
	SYN	FRONT,TTTT11
	SYN	MOMENT,TTTT12

	SYN	DORIO,TTTT13
	SYN	THREAT,TTTT14
	SYN	QUICK,TTTT15

	SYN	DIAG,TTTT16
	SYN	EDGE,TTTT17
	SYN	MOBIL2,TTTT18
	SUBTTL	FINAL SCORE EVALUATION

;******************************************************************
;     EVA CALCULATES A FINAL SCORE FROM THE MOST RECENT EVALUATION
;TERMS.
;	CFLAG SPECIFIES BY BITS WHICH TERMS ARE COMPUTED AN EV.
;CFLAG=0 SPECIFIES PIECE COUNT ONLY.
;
;THE RESULT IS RETURNED IN REGISTER C5.
;   IT IS ASSUMED THAT THE MOST RECENT RESULTS FROM EV HAVE BEEN
;LEFT IN REGISTER Q (UNLESS CFLAG = 0), AND THAT A,P,K, AND X5 ARE
;ALSO AS THEY WERE UPON THE LAST EXIT FROM EV.
;   AL∪ REGISTERS EXCEPT X2,X3,X4, AND PDP ARE USED.
;REGISTER X1 IS SAVED AND RESTORED.
;******************************************************************

PHASEV:	MOVE	Q,P		;COMPUTE PHASE
	IOR	Q,A
	CAQ	U5,U1
	MOVE	U5,PHASET(U1)
	MOVEM	U5,PHASE
	POPJ	PDP,

PHASET:	REPEAT	12,<	0>
	REPEAT	4,<	1>
	REPEAT	5,<	2>
	REPEAT	10,<	3>


;***************************************************************
;     ERROR ROUTINES
;***************************************************************


CFERR1:	MOVEI	U1,[ASCIZ/ EV OVERFLOW /]
	PUSHJ	PDP,PRINT
	MOVE	U1,Z
	PUSHJ	PDP,OCT2
	POPJ	PDP,
CFERR3:	MOVEI	U1,[ASCIZ/ SHIFT /]
	PUSHJ	PDP,PRINT
	MOVE	U1,Z
	PUSHJ	PDP,OCT2
	MOVEI	U1,[ASCIZ / LOCATION /]
	PUSHJ	PDP,PRINT
	HRRZ	U1,PDP
	PUSHJ	PDP,OCT2
	JRST	TERPRI	;WARNING MESSAGE FOR STORE HAS BEEN PRINTED
CFERR2:	MOVEI	U1,[ASCIZ/!/]
	PUSHJ	PDP,PRINT
	MOVEI	U2,740
	POPJ	PDP,



	SUBTTL	PARTIAL EVALUATION

;******************************************************************
;     EV CALCULATES AND STORES EVALUATION TERMS.
;IF CFLAG = 0  THEN  NOTHING IS DONE
;THE RESULTS ARE STORED IN REGISTER Q.
;   REGISTER X5 MUST HAVE THE COLOR OF THE BOARD IN IT
;(BLACK'S MOVE = 0), AND A, P, AND K MUST BE PROPERLY FILLED
;UPON ENTRY.  THESE 4 REGISTERS ARE SAVED, AS WELL AS X1,X2,X3,
;X4, AND PDP.  ALL REGISTERS ARE USED.
;******************************************************************




TLIST:	T1	1	;PHASE 0
	T2	1
	T3	1
	T4	1
	T5	1
	T6	1
	T7	1
	T8	1
	T9	1
	T10	1
	T11	1
	T12	1
	T13	1
	T14	1
	T15	1
	T16	1
	T17	1
	T18	1

	TT1	1	;PHASE 1
	TT2	1
	TT3	1
	TT4	1
	TT5	1
	TT6	1
	TT7	1
	TT8	1
	TT9	1
	TT10	1
	TT11	1
	TT12	1
	TT13	1
	TT14	1
	TT15	1
	TT16	1
	TT17	1
	TT18	1

	TTT1	1	;PHASE 2
	TTT2	1
	TTT3	1
	TTT4	1
	TTT5	1
	TTT6	1
	TTT7	1
	TTT8	1
	TTT9	1
	TTT10	1
	TTT11	1
	TTT12	1
	TTT13	1
	TTT14	1
	TTT15	1
	TTT16	1
	TTT17	1
	TTT18	1

	TTTT1	1	PHASE 3
	TTTT2	1
	TTTT3	1
	TTTT4	1
	TTTT5	1
	TTTT6	1
	TTTT7	1
	TTTT8	1
	TTTT9	1
	TTTT10	1
	TTTT11	1
	TTTT12	1
	TTTT13	1
	TTTT14	1
	TTTT15	1
	TTTT16	1
	TTTT17	1
	TTTT18	1
	Z		;LIST TERMINATOR

EV:	SKIPN	CFLAG
	POPJ	PDP,
	MOVEM	X1,CFZ2	;SAVE REGISTER
	MOVEM	X4,CFZ1	;OTHERWISE, SAVE REGISTERS
	MOVEM	X3,CFZ3
	MOVEM	X2,CFZ4
	MOVEM	PDP,CFZ5
	MOVEM	U1,FA
	MOVEM	U2,BA
;	SETZM	X1
;	CALL	X1,[SIXBIT /RUNTIME/]
;	MOVEM	X1,EVTIM0
	MOVE	X1,A
	AND	X1,K
	MOVEM	X1,AK		;ACTIVE KINGS
	XOR	X1,A
	MOVEM	X1,AN		;ACTIVE NON-KINGS
	MOVE	X1,P
	AND	X1,K
	MOVEM	X1,PK		;PASSIVE KINGS
	MOVE	X2,X1
	XOR	X2,P
	MOVEM	X2,PN		;PASSIVE NON-KINGS
	MOVE	X2,P
	TRNE	X5,1		;TEST DIRECTION
	EXCH	X1,X2		;X1 NOW FP, X2 NOW BP
	MOVEM	X1,FP
	MOVEM	X2,BP
	EMAC	-4,U1,-10,RFB
	EMAC	-5,U1,-12,LFB
	EMAC	4,U2,10,LBB
	EMAC	5,U2,12,RBB
	EVMAC	U3,X2,4,12,-5,-4,RFM,RFD,RFU,5,RFT,RFB,RFR,LFB
	EVMAC	U4,X2,5,10,-4,-5,LFM,LFD,LFU,4,LFT,LFB,LFR,RFB
	EVMAC	U5,X1,-4,-12,5,4,LBM,LBD,LBU,-5,LBT,LBB,LBR,RBB
	EVMAC	Q,X1,-5,-10,4,5,RBM,RBD,RBU,-4,RBT,RBB,RBR,LBB
	MOVE	U5,CFLAG
	MOVE	PDP,CFZ5
	MOVE	U1,PHASE
	MOVE	Z,TESTLS(U1)
	HRRM	Z,EVD
	HRRM	Z,EVD2
	SETZ	Q,
	MOVEI	U4,21		;18 TERMS TOTAL
	TRNN	U5,@TESTM(U4)
	JRST	.+4		;BYPASS THIS TERM
EVD:	PUSHJ	PDP,TESTS(U4)
	LSH	X4,@TESTSH(U4)
	IOR	Q,X4
	SUBI	U4,1
	CAILE	U4,10		;IS IT TIME FOR SECOND HALF
	JRST	.-7		;NO
	MOVE	X3,CFZ3
	MOVEM	Q,EEB(X3)
	SETZ	Q,
	TRNN	U5,@TESTM(U4)
	JRST	.+4		;BYPASS THIS TERM
EVD2:	PUSHJ	PDP,TESTS(U4)
	LSH	X4,@TESTSH(U4)
	IOR	Q,X4
	SOJGE	U4,.-5
	MOVE	X3,CFZ3
	MOVEM	Q,EEB2(X3)
;	SETZM	X1
;	CALL	X1,[SIXBIT /RUNTIME/]
;	SUB	X1,EVTIM0
;	ADDM	X1,EVTIMT
	MOVE	X4,CFZ1		;RESTORE REGISTERS
	MOVE	X2,CFZ4
	MOVE	X1,CFZ2
	POPJ	PDP,	;RETURN

	Z
	Z
EEB:	BLOCK	20
	Z
	Z
EEB2:	BLOCK	20

TESTLS:	TESTS		;GET TESTS FOR CORRECT PHASE
	TESTS+22
	TESTS+44
	TESTS+66

TESTM:	400000
	200000
	100000
	40000
	20000
	10000
	4000
	2000
	1000
	400
	200
	100
	40
	20
	10
	4
	2
	1


TESTSH:	40
	34
	30
	24
	20
	14
	10
	4
	0
	40
	34
	30
	24
	20
	14
	10
	4
	0

TESTS:	T1	0
	T2	0
	T3	0
	T4	0
	T5	0
	T6	0
	T7	0
	T8	0
	T9	0
	T10	0
	T11	0
	T12	0
	T13	0
	T14	0
	T15	0
	T16	0
	T17	0
	T18	0

	TT1	0
	TT2	0
	TT3	0
	TT4	0
	TT5	0
	TT6	0
	TT7	0
	TT8	0
	TT9	0
	TT10	0
	TT11	0
	TT12	0
	TT13	0
	TT14	0
	TT15	0
	TT16	0
	TT17	0
	TT18	0

	TTT1	0
	TTT2	0
	TTT3	0
	TTT4	0
	TTT5	0
	TTT6	0
	TTT7	0
	TTT8	0
	TTT9	0
	TTT10	0
	TTT11	0
	TTT12	0
	TTT13	0
	TTT14	0
	TTT15	0
	TTT16	0
	TTT17	0
	TTT18	0

	TTTT1	0
	TTTT2	0
	TTTT3	0
	TTTT4	0
	TTTT5	0
	TTTT6	0
	TTTT7	0
	TTTT8	0
	TTTT9	0
	TTTT10	0
	TTTT11	0
	TTTT12	0
	TTTT13	0
	TTTT14	0
	TTTT15	0
	TTTT16	0
	TTTT17	0
	TTTT18	0


CFZ1:	Z	;TEMPORARY STORAGE
CFZ2:	Z
CFZ3:	Z
CFZ4:	Z
CFZ5:	Z
CFZ10:	Z	;BACKUP LOCATION FOR PASK
CFZ11:	Z	;BACKUP LOCATION FOR ACTK
CEMPTY:	Z	;TEMPORARY LOCATION FOR EMPTY, ET.AL.
CFTAB2:	BLOCK	400	;TABLE 2 FOR EVALUATION
CFTAB3:	BLOCK	1000	;TABLE 3 FOR EVALUATION
CFLAG:	777777	;SET BY PROGRAM
DENYC:	Z	;SPECIAL VALUES USED IN EVALUATION TERMS
THRTC:	Z
UMB:	Z
CFMSK:	202020202020	;OF SIGT21 AND SIGTF
CFMSK2:	207777777777	;MASK
PHASE:	Z
KSTART:	Z		;INITIAL KINGS

MSK2:	360000000017	;SPECIAL BOARD MASKS
OFFEDG:	357377377367

DDIM:	004306143040
CMSK:	377372
DMSK:	137377000000
WGRD1:	5
WGRD2:	106
BGRD1:	240000000000
BGRD2:	142000000000
RMASK:	367367367367
SHOVM:	357357357357
VULW1:	000340000000
VULW2:	000200000000
VULW3:	16
VULW4:	3
VULB1:	7000
VULB2:	1000
VULB3:	160000000000
VULB4:	300000000000
MSK1:	030030030030
MSK3:	040000000004
MSK4:	200000000001


	END